package br.com.laeventos.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import br.com.laeventos.interfaces.InterfaceBanco;
import br.com.laeventos.model.Atividade;

public class AtividadeDAO implements InterfaceBanco{

	public static Connection connection = null;
	
	public AtividadeDAO() {
        if(connection == null){
                try {
					connection = ConnectionFactory.getConnection();
				} catch (ClassNotFoundException | SQLException e) {
					e.printStackTrace();
				}
        }
	 }
    
	public ArrayList<Atividade> retornar(int limit, String tituloBusca, int opcao) throws Exception {
		ArrayList<Atividade> lista  = new ArrayList<>();
		String sql = "SELECT * FROM atividade WHERE titulo LIKE '%"+tituloBusca+"%' ORDER BY titulo LIMIT "+limit;
		if(opcao==5){
			sql = "SELECT * FROM atividade WHERE titulo LIKE '%"+tituloBusca+"%' ORDER BY titulo";
		}else if(opcao==10){
			sql = "SELECT * FROM atividade WHERE codigo="+tituloBusca+"";
		}
		PreparedStatement ps = connection.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		boolean flag = false;
		while(rs.next()){
			flag=true;
			Atividade a = new Atividade();
			int codigo = rs.getInt("codigo");
			String titulo = rs.getString("titulo");
			String descricao = rs.getString("descricao");
			String ministrante = rs.getString("ministrante");
			int qtdParticipantes = rs.getInt("qtd_participantes");
			double valor = rs.getDouble("valor_atividade");
			int codEventoRelacionado = rs.getInt("id_evento");
			a.setCodigo(codigo);
			a.setTitulo(titulo);
			a.setDescricao(descricao);
			a.setMinistrante(ministrante);
			a.setQtdParticipantes(qtdParticipantes);
			a.setValor(valor);
			a.setCodEventoRelacionado(codEventoRelacionado);
			lista.add(a);
		}
		if (!flag){
			//CODIGO PARA ATIVIDADE NAO ENCONTRADAS
		}
		return lista;
	}

	
	public boolean cadastrar(Object obj) throws Exception {
		Atividade atividade = (Atividade) obj;
		String sql = "INSERT INTO atividade (codigo, titulo, descricao, ministrante, qtd_participantes, valor_atividade, id_evento) VALUES(default, ?, ?, ?, ?, ?, ?)";
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setString(1, atividade.getTitulo());
        ps.setString(2, atividade.getDescricao());
        ps.setString(3, atividade.getMinistrante());
        ps.setInt(4, atividade.getQtdParticipantes());
        ps.setDouble(5, atividade.getValor());
        ps.setInt(6, atividade.getCodEventoRelacionado());
        int resultado = ps.executeUpdate();
        if (resultado == 0)
        	return false;
        else
        	return true;
	}


	public boolean alterar(Object obj) throws Exception {
		Atividade atividade = (Atividade) obj;
		String sql = "UPDATE atividade SET titulo = ?, descricao = ?, ministrante = ?, qtd_participantes = ?, valor_atividade = ?, id_evento = ? WHERE codigo=" + atividade.getCodigo();
		PreparedStatement ps = connection.prepareStatement(sql);
		ps.setString(1, atividade.getTitulo());
		ps.setString(2, atividade.getDescricao());
        ps.setString(3, atividade.getMinistrante());
        ps.setInt(4, atividade.getQtdParticipantes());
        ps.setDouble(5, atividade.getValor());
        ps.setInt(6, atividade.getCodEventoRelacionado());
        int resultado = ps.executeUpdate();
        if(resultado == 0){
            return false;
        }else{
            return true;
        }
	}

	
	public boolean deletar(Object obj) throws Exception {
		Atividade atividade = (Atividade) obj;
		String sql = "DELETE FROM atividade WHERE codigo="+atividade.getCodigo();
        PreparedStatement ps = connection.prepareStatement(sql);
        int resultado = ps.executeUpdate();
        if(resultado == 0){
            return false;
        }else{
            return true;
        }
	}


}
